/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	HEDecimal.java
 * 模块说明：	
 * 修改历史：
 * Aug 29, 2007 - lxm - 创建。
 */
package com.hd123.rumba.jsp.table;

import com.hd123.rumba.request.JspLib;

/**
 * 用于十进制数据的表格单元格编辑器。
 * 
 * @author lxm
 * 
 */
public class HEDecimal extends HEText {

  /**
   * 构造函数。
   * 
   * @param params
   *          其它参数数组。可用的参数说明参见相应的属性说明。
   */
  public HEDecimal(Object[] params) {
    super(params);
    if (this.range == null)
      this.range = VALUE_RANGE_DECIMAL;
  }

  private Integer range;
  private Integer precision;
  private String format;

  /** 属性{@link #range}的取值，表示正数范围。 */
  public static final Integer VALUE_RANGE_POSITIVE = new Integer(1);
  /** 属性{@link #range}的取值，表示零范围。 */
  public static final Integer VALUE_RANGE_ZERO = new Integer(2);
  /** 属性{@link #range}的取值，表示负数范围。 */
  public static final Integer VALUE_RANGE_NEGATIVE = new Integer(4);
  /** 属性{@link #range}的取值，表示所与十进制数范围。 */
  public static final Integer VALUE_RANGE_DECIMAL = new Integer(7);

  /**
   * 显示格式字符串。<br>
   * 对应参数名"format"，下一个参数为取值，类型为String。<br>
   */
  public String getFormat() {
    return format;
  }

  public void setFormat(String format) {
    this.format = format;
  }

  /**
   * 精度。允许null，表示不限制精度。默认为null。<br>
   * 对应参数名"precision"，下一个参数为取值，类型为Integer。<br>
   */
  public Integer getPrecision() {
    return precision;
  }

  public void setPrecision(Integer precision) {
    this.precision = precision;
  }

  /**
   * 取值范围，取值参见“VALUE_RANGE_*”，默认值为{@link #VALUE_RANGE_DECIMAL}。<br>
   * 对应参数名"range"，下一个参数为取值，类型为Integer。<br>
   */
  public Integer getRange() {
    return range;
  }

  public void setRange(Integer range) {
    this.range = range;
  }

  @Override
  protected boolean readParam(String paramName, Object paramValue) {
    if (super.readParam(paramName, paramValue))
      return true;
    if ("range".equals(paramName))
      this.range = (Integer) paramValue;
    else if ("precision".equals(paramName))
      this.precision = (Integer) paramValue;
    else if ("format".equals(paramName))
      this.format = (String) paramValue;
    return false;
  }
  
  @Override
  protected String getClassNameJS() {
    return "RTableEditor.EDecimal";
  }

  @Override
  protected String buildConfigJS() {
    StringBuffer sb = new StringBuffer();
    if (this.range != null)
      sb.append("range: " + JspLib.toJSConst(this.range));
    if (this.precision != null) {
      if (sb.length() > 0)
        sb.append(", ");
      sb.append("precision: " + JspLib.toJSConst(this.precision));
    }
    if (this.format != null) {
      if (sb.length() > 0)
        sb.append(", ");
      sb.append("format: " + JspLib.toJSConst(this.format));
    }
    return sb.toString();
  }

}
